package acm;

import java.util.Scanner;

//6174问题，给定一个各位数字均不相同的四位数，从大到小排序和从小到大排序，然后相减，最后对结果
//重复上述步骤，会得到6174.  7641-1467=6174
public class Number6174 {

	//记录最大的数组长度为1000，注意若输入的数字有位数相同，那么最终结果不会出先6174
	private static final int maxRecord=1000;
	private static int[] record=new int[maxRecord];
	public static void main(String[] args) {
		Scanner scanner =new Scanner(System.in);
		int m=scanner.nextInt();
		record[0]=m;
		int next;
		for(int i=1;i<record.length;i++){
			next=getNextNumber(m);
			//如果下一个数出现过，则输出，并退出循环
			if (isAppear(next)) {
				System.out.print(record[0]);
				for(int j=1;j<i;j++){
					System.out.print("->"+record[j]);
				}
				System.out.print("->"+next);
				break;
			}
			record[i]=next;
			m=record[i];
		}
		scanner.close();
	}
	
	//对输入的数排序，然后相减，最后返回结果（下一个数）
	public static int getNextNumber(int x) {
		int max=0,min=0;
		String string=""+x;
		char[] c=string.toCharArray();
		//先利用冒泡排序得到最小的排序的个位数
		for (int i = 0; i < c.length; i++) {
			for (int j = i+1; j < c.length; j++) {
				if(c[i]>c[j]){
					char temp=c[i];c[i]=c[j];c[j]=temp;
				}
			}
		}
		min=Integer.parseInt(String.copyValueOf(c));
		//然后反转字符数组，得到最大值
		for(int j=0;j<c.length/2;j++){
			char temp=c[j];c[j]=c[c.length-1-j];c[c.length-1-j]=temp;
		}
		max=Integer.parseInt(String.copyValueOf(c));
		return max-min;
	}
	//判断新得到的数字是否已经出现过
	public static boolean isAppear(int number){
		for (int i = 0; i < record.length; i++) {
			if(number==record[i]){
				return true;
			}
		}
		return false;
	}
}
